Submission #204149

#TimeUsernameProblemLanguageResultExecution timeMemory
204149awlintqaaTeams (IOI15_teams)C++14
0 / 100
4069 ms11512 KiB
#define fast ios_base::sync_with_stdio(0),cin.tie(0),cout.tie(0) #include <bits/stdc++.h> using namespace std; #define sqr 200 #define mid (l+r)/2 #define pb push_back #define ppb pop_back #define fi first #define se second #define lb lower_bound #define ub upper_bound #define ins insert #define era erase #define C continue #define mem(dp,i) memset(dp,i,sizeof(dp)) #define mset multiset typedef long long ll; typedef short int si; typedef long double ld; typedef pair<int,int> pi; typedef pair<ll,ll> pll; typedef vector<int> vi; typedef vector<ll> vll; typedef vector<pi> vpi; typedef vector<pll> vpll; const ll mod=1e9+7; const ll inf= 4e18; const ld pai=acos(-1); #include "teams.h" int n; pi a[200009]; int tree[2000009]; void build(int node,int l ,int r ){ if ( l==r ){ tree[node]= a[l].fi; return ; } build(node*2,l,mid); build(node*2+1,mid+1,r); tree[node]=min(tree[node*2],tree[node*2+1]); } void upd(int node,int l,int r,int id,int x){ if ( l == r ){ tree[node]=x; return ; } if ( id <= mid)upd(node*2,l,mid,id,x); else upd(node*2+1,mid+1,r,id,x); tree[node]=min(tree[node*2],tree[node*2+1]); } int query(int node,int l,int r,int s,int e){ if ( s>r || e<l)return 1e9; if ( s<=l && e>=r ) return tree[node]; return min(query(node*2,l,mid,s,e) , query (node*2+1,mid+1,r,s,e) ); } int nxt ( int st, int x ){ int l =st ,r = n; while ( r-l>1 ) { if ( a[mid].se<x)l=st=mid; else{ if ( query(1,0,n-1,st+1,mid) <= x)r=mid; else l=mid; } } return r; } void init(int N, int A[], int B[]) { n=N; for ( int i =0 ;i < n ;i ++ ){ a[i]={B[i],A[i]}; } sort(a,a+n); for(int i =0 ;i < n;i ++ ) { swap(a[i].fi,a[i].se); } build(1,0,n-1); } int can(int M, int K[]) { int z = 1 ; vi ret; sort(K,K+M); int j =-1; for(int i =0 ;i < M ;i ++ ){ int crnt = K[i]; while ( crnt -- ){ j = nxt ( j , K[i]); if ( j == n ){ z =0 ; break; } upd (1,0,n-1, j , 1e9 ); ret.pb(j); } if ( !z ) break; } for(auto u:ret){ upd(1,0,n-1,u,a[u].fi); } return z; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...