http://acm.pku.edu.cn/JudgeOnline/problem?id=1083
Код:
#include <stdio.h> #include <algorithm> #include <vector> using std::pair; using std::sort; const int NMAX = 220; FILE *op=stdin; FILE *out=stdout; int T; int n; int p; int check[NMAX]; pair <int,int> a[NMAX]; int cnt; void inlet() { int i; int t; fscanf(op,"%d",&n); for(i=1;i<=n;i++) { fscanf(op,"%d %d",&a[i].first,&a[i].second); if(a[i].first > a[i].second) { t = a[i].first; a[i].first = a[i].second; a[i].second = t; } } for(i=1;i<=n;i++) { if(a[i].first % 2 == 0) a[i].first /= 2; else a[i].first = a[i].first/2 + 1; if(a[i].second % 2 == 0) a[i].second /= 2; else a[i].second = a[i].second/2 + 1; } } void outlet(int c) { fprintf(out,"%d\n",cnt); } void work() { int i; int s,q; p = n; sort(a+1,a+n+1); cnt = 0; memset(check,0,sizeof(check)); while(1) { cnt += 10; s = 0; for(i=1;i<=n;i++) { if(check[i] == 0 && a[i].first > s) { p--; check[i] = 1; s = a[i].second; q = i; } } if(p == 0) break; } outlet(cnt); } int main() { fscanf(op,"%d",&T); int i; for(i=1;i<=T;i++) { inlet(); work(); } }