Submission #1157267
Source Code Expand
#include <cstdio> #include <cmath> #include <ctime> #include <string> #include <cstring> #include <cstdlib> #include <iostream> #include <algorithm> #include <set> #include <queue> #include <vector> #include <map> #include <complex> #include <list> #define pb push_back #define lb lower_bound #define lowbit(x) (x)&(-x) #define forup(i,a,b) for(int i=(a);i<=(b);i++) #define fordown(i,a,b) for(int i=(a);i>=(b);i--) #define maxn 4000005 #define INF 1070000000 #define pa pair<double,int> #define mp make_pair #define pi acos(-1); #define int ll using namespace std; typedef long long ll; typedef unsigned long long ull; template<class T> inline void read(T& num){ num = 0; bool f = true;char ch = getchar(); while(ch < '0' || ch > '9') { if(ch == '-') f = false;ch = getchar();} while(ch >= '0' && ch <= '9') {num = num * 10 + ch - '0';ch = getchar();} num = f ? num: -num; } int out[100]; template<class T> inline void write(T x,char ch){ if (x==0) {putchar('0'); putchar(ch); return;} if (x<0) {putchar('-'); x=-x;} int num=0; while (x){ out[num++]=(x%10); x=x/10;} fordown(i,num-1,0) putchar(out[i]+'0'); putchar(ch); } /*========================================================*/ int n,c,k; int t[maxn]; struct per { int siz,col;}p[maxn]; bool cmp(per x,per y) {return x.siz<y.siz;} bool vis[maxn]; bool check(int x) { int sz=p[x].siz; forup(i,1,n) { if(i==x) continue; if(p[i].siz<=sz*2) { sz+=p[i].siz;} else {return 0;} } return 1; } signed main() { cin>>n; forup(i,1,n) { read(p[i].siz); p[i].col=i; } sort(p+1,p+1+n,cmp); //forup(i,1,n) //sum[i]=sum[i-1]+p[i].siz; int l=1,r=n; while(l<r) { int mid=(l+r)>>1; if(check(mid)) r=mid; else l=mid; } int sta; if(check(l)) sta=l; else sta=r; cout<<sta<<endl; forup(i,sta,n) { vis[p[i].col]=1; } int cnt=0; forup(i,1,n) if(vis[i]) cnt++; cout<<cnt; return 0; }
Submission Info
Submission Time | |
---|---|
Task | C - Squared Graph |
User | stalin |
Language | Pascal (FPC 2.6.2) |
Score | 0 |
Code Size | 2101 Byte |
Status | CE |