diff --git a/LICENSE b/LICENSE.txt similarity index 100% rename from LICENSE rename to LICENSE.txt diff --git a/MANIFEST b/MANIFEST new file mode 100644 index 0000000..e08702d --- /dev/null +++ b/MANIFEST @@ -0,0 +1,4 @@ +# file GENERATED by distutils, do NOT edit +setup.cfg +setup.py +pkuchive/__init__.py diff --git a/example/1000 A+B Problem/16540847_AC_16MS_388K.cc b/example/1000 A+B Problem/16540847_AC_16MS_388K.cc deleted file mode 100644 index 7aab6bd..0000000 --- a/example/1000 A+B Problem/16540847_AC_16MS_388K.cc +++ /dev/null @@ -1,9 +0,0 @@ -#include - -int main() -{ - int a,b; - scanf("%d %d",&a, &b); - printf("%d\n",a+b); - return 0; -} \ No newline at end of file diff --git a/example/1011 Sticks/16546419_TLE.cc b/example/1011 Sticks/16546419_TLE.cc deleted file mode 100644 index b3fb07e..0000000 --- a/example/1011 Sticks/16546419_TLE.cc +++ /dev/null @@ -1,55 +0,0 @@ -#include -#include -#include -#include -using namespace std; -int sum,n,L,a[100]; -bool vis[100]; -bool dfs(int l,int lpos) { - bool f=0; - for(int i=1; i<=n; i++) if(!vis[i]) { - f=1; - break; - } - if(l==0) { - if(!f) return true; - else return dfs(L,0); - } - if(!f) return false; - for(int i=lpos+1; i<=n; i++) { -// cout<<"IN "<1 && (a[i]==a[i-1]) && (!vis[i-1])) continue; - if(!vis[i]&&a[i]<=l) { - vis[i]=true; - if(dfs(l-a[i],i)) return true; - vis[i]=false; - if(a[i]==l) return false; - } - } - return false; -} -int main() { - while(1) { - scanf("%d",&n); - if(n==0) goto ed; - else { - memset(a,0,sizeof a); - memset(vis,0,sizeof vis); - sum=0; - for(int i=1; i<=n; i++) { - scanf("%d",&a[i]); - sum+=a[i]; - } - sort(a+1,a+n+1); - reverse(a+1,a+n+1); - for(L=a[n]; L<=sum; L++) { - if(sum%L) continue; - if(dfs(L,0)) { - printf("%d\n",L); - } - } - } - } -ed: - return 0; -} \ No newline at end of file diff --git a/example/1011 Sticks/16546589_CE.cc b/example/1011 Sticks/16546589_CE.cc deleted file mode 100644 index 6de405d..0000000 --- a/example/1011 Sticks/16546589_CE.cc +++ /dev/null @@ -1,67 +0,0 @@ -#include -#include -#include -#include -using namespace std; -int sum,n,L,a[100]; -bool vis[100]; -bool dfs(int l,int lpos) { - bool f=0; - for(int i=1; i<=n; i++) if(!vis[i]) { - f=1; - break; - } - if(l==0) { - if(!f) return true; - else return dfs(L,0); - } - if(!f) return false; - if(l==L) { - for(int i=last+1; i<=n; i++) { - if((i>lpos+1) && (a[i]==a[i-1]) && (!vis[i-1])) continue; - if(!vis[i]&&a[i]<=l) { - vis[i]=1; - if(dfs(l-a[i],i)) return true; - vis[i]=0; - return false; - } - } - return false; - } - for(int i=lpos+1; i<=n; i++) { - if((i>lpos+1) && (a[i]==a[i-1]) && (!vis[i-1])) continue; - if(!vis[i]&&a[i]<=l) { - vis[i]=true; - if(dfs(l-a[i],i)) return true; - vis[i]=false; - if(a[i]==l) return false; - } - } - return false; -} -int main() { - while(1) { - scanf("%d",&n); - if(n==0) goto ed; - else { - memset(a,0,sizeof a); - memset(vis,0,sizeof vis); - sum=0; - T=0; - for(int i=1; i<=n; i++) { - scanf("%d",&a[i]); - sum+=a[i]; - } - sort(a+1,a+n+1); - reverse(a+1,a+n+1); - for(L=a[n]; L<=sum; L++) { - if(sum%L) continue; - if(dfs(L,0)) { - printf("%d\n",L); - } - } - } - } -ed: - return 0; -} \ No newline at end of file diff --git a/example/1011 Sticks/16546591_AC_0MS_692K.cc b/example/1011 Sticks/16546591_AC_0MS_692K.cc deleted file mode 100644 index dc87f45..0000000 --- a/example/1011 Sticks/16546591_AC_0MS_692K.cc +++ /dev/null @@ -1,67 +0,0 @@ -#include -#include -#include -#include -using namespace std; -int sum,n,L,a[100]; -bool vis[100]; -bool dfs(int l,int lpos) { - bool f=0; - for(int i=1; i<=n; i++) if(!vis[i]) { - f=1; - break; - } - if(l==0) { - if(!f) return true; - else return dfs(L,0); - } - if(!f) return false; - if(l==L) { - for(int i=lpos+1; i<=n; i++) { - if((i>lpos+1) && (a[i]==a[i-1]) && (!vis[i-1])) continue; - if(!vis[i]&&a[i]<=l) { - vis[i]=1; - if(dfs(l-a[i],i)) return true; - vis[i]=0; - return false; - } - } - return false; - } - for(int i=lpos+1; i<=n; i++) { - if((i>lpos+1) && (a[i]==a[i-1]) && (!vis[i-1])) continue; - if(!vis[i]&&a[i]<=l) { - vis[i]=true; - if(dfs(l-a[i],i)) return true; - vis[i]=false; - if(a[i]==l) return false; - } - } - return false; -} -int main() { - while(1) { - scanf("%d",&n); - if(n==0) goto ed; - else { - memset(a,0,sizeof a); - memset(vis,0,sizeof vis); - sum=0; - L=0; - for(int i=1; i<=n; i++) { - scanf("%d",&a[i]); - sum+=a[i]; - } - sort(a+1,a+n+1); - reverse(a+1,a+n+1); - for(L=a[n]; L<=sum; L++) { - if(sum%L) continue; - if(dfs(L,0)) { - printf("%d\n",L); - } - } - } - } -ed: - return 0; -} \ No newline at end of file diff --git a/example/1015 Jury Compromise/16675073_AC_16MS_624K.cc b/example/1015 Jury Compromise/16675073_AC_16MS_624K.cc deleted file mode 100644 index fff8512..0000000 --- a/example/1015 Jury Compromise/16675073_AC_16MS_624K.cc +++ /dev/null @@ -1,58 +0,0 @@ -#include -#include -#include -#include -int f[30][1000]; -int path[30][1000], p[300], d[300], answer[300]; -int cmp(const void *a, const void *b) { - return *(int*)a - *(int*)b; -} -int main() { - int i, j, k, t1, t2, n, m, nMinP_D, _case = 0; - while(1) { - scanf("%d%d", &n, &m); - if(n == 0 && m == 0) break; - _case++; - for(int i = 1; i <= n; i++) scanf("%d %d", &p[i], &d[i]); - memset(f, -1, sizeof f); - memset(path, 0, sizeof path); - nMinP_D = m * 20; - f[0][nMinP_D] = 0; - for(j = 0; j < m; j++) { - for(k = 0; k <= nMinP_D * 2; k++) { - if(f[j][k] >= 0) { - for(i = 1; i <= n; i++){ - if(f[j][k] + p[i] + d[i] > f[j + 1][k + p[i] - d[i]]) { - t1 = j, t2 = k; - while(t1 && path[t1][t2] != i) { - t2 -= p[path[t1][t2]] - d[path[t1][t2]]; - t1--; - } - if(t1 == 0){ - f[j + 1][k + p[i] - d[i]] = f[j][k] + p[i] + d[i]; - path[j + 1][k + p[i] - d[i]] = i; - } - } - } - } - } - } - i = nMinP_D; - j = 0; - while(f[m][i + j] < 0 && f[m][i - j] < 0) j++; - if(f[m][i + j] > f[m][i - j]) k = i + j; - else k = i - j; - printf("Jury #%d\n",_case); - printf("Best jury has value %d for prosecution and value %d for defence:\n", - (k - nMinP_D + f[m][k]) / 2,(f[m][k] - k + nMinP_D) / 2); - for(i = 1; i <= m; i++) { - answer[i] = path[m - i + 1][k]; - k -= p[answer[i]] - d[answer[i]]; - } - qsort(answer+1, m, sizeof(int), cmp); - for(i = 1; i <= m; i++) - printf(" %d", answer[i]); - printf("\n\n"); - } - return 0; -} \ No newline at end of file diff --git a/example/1018 Communication System/16645954_WA.cc b/example/1018 Communication System/16645954_WA.cc deleted file mode 100644 index b3955b9..0000000 --- a/example/1018 Communication System/16645954_WA.cc +++ /dev/null @@ -1,33 +0,0 @@ -#include -#include -using namespace std; -class device{ - public: - int b,p; -}dp[150]; -int t,n; -int main(){ - scanf("%d%d",&t,&n); - for(int it=1;it<=t;it++){ - for(int d,i=1;i<=n;i++){ - scanf("%d",&d); - double tmpl,tmpn; - double ans=0; - for(int j=1;j<=d;j++){ - int mb,mp; - scanf("%d%d",&mb,&mp); - tmpn=mb/mp; - if(tmpn>=ans){ - ans=tmpn; - dp[i].b=mb; - dp[i].p=mp; - } - } - dp[i].p+=dp[i-1].p; - } - int anss=0x7f; - for(int i=1;i<=n;i++) anss=min(anss,dp[i].b); - printf("%.3lf\n",(double)(anss/dp[n].p)); - } - return 0; -} \ No newline at end of file diff --git a/example/1018 Communication System/16645959_WA.cc b/example/1018 Communication System/16645959_WA.cc deleted file mode 100644 index b3f8d80..0000000 --- a/example/1018 Communication System/16645959_WA.cc +++ /dev/null @@ -1,34 +0,0 @@ -#include -#include -using namespace std; -class device{ - public: - int b,p; -}dp[150]; -int t,n; -int main(){ - scanf("%d%d",&t,&n); - for(int it=1;it<=t;it++){ - for(int d,i=1;i<=n;i++){ - scanf("%d",&d); - double tmpl,tmpn; - double ans=0; - for(int j=1;j<=d;j++){ - int mb,mp; - scanf("%d%d",&mb,&mp); - tmpn=mb/mp; - if(tmpn>=ans){ - ans=tmpn; - dp[i].b=mb; - dp[i].p=mp; - } - } - dp[i].p+=dp[i-1].p; - } - int anss=0x7f; - for(int i=1;i<=n;i++) anss=min(anss,dp[i].b); - double _a=(double)anss/(double)(dp[n].p); - printf("%.3lf\n",_a); - } - return 0; -} \ No newline at end of file diff --git a/example/1018 Communication System/16648330_WA.cc b/example/1018 Communication System/16648330_WA.cc deleted file mode 100644 index 210f300..0000000 --- a/example/1018 Communication System/16648330_WA.cc +++ /dev/null @@ -1,34 +0,0 @@ -#include -#include -using namespace std; -class device{ - public: - int b,p; -}dp[150]; -int t,n; -int main(){ - scanf("%d%d",&t,&n); - for(int it=1;it<=t;it++){ - for(int d,i=1;i<=n;i++){ - scanf("%d",&d); - double tmpl,tmpn; - double ans=0.0; - for(int j=1;j<=d;j++){ - double mb,mp; - scanf("%lf%lf",&mb,&mp); - tmpn=mb/mp; - if(tmpn>=ans){ - ans=tmpn; - dp[i].b=mb; - dp[i].p=mp; - } - } - dp[i].p+=dp[i-1].p; - } - int anss=0x7f; - for(int i=1;i<=n;i++) anss=min(anss,dp[i].b); - double _a=(double)anss/(double)(dp[n].p); - printf("%.3lf\n",_a); - } - return 0; -} \ No newline at end of file diff --git a/example/1018 Communication System/16648662_WA.cc b/example/1018 Communication System/16648662_WA.cc deleted file mode 100644 index 64a22c2..0000000 --- a/example/1018 Communication System/16648662_WA.cc +++ /dev/null @@ -1,54 +0,0 @@ -#include -#include -#include -#include -#include -#include -#include -#include - -using namespace std; -int dp[109][1009]; -int n; -int mi[109]; -struct nod{ - int b,p; -} re[109][109]; -int main() -{ - #ifndef ONLINE_JUDGE - freopen("in.txt","r",stdin); - #endif - int cas,maxb; - scanf("%d",&cas); - while(cas--) - { - int a,b;maxb = 0; - scanf("%d",&n); - memset(dp,0x3f,sizeof(dp)); - for(int i=1;i<=n;i++) - { - scanf("%d",&mi[i]); - for(int j=1;j<=mi[i];j++) - { - scanf("%d%d",&a,&b); - if(maxb -#include -#include -#include -#include -#include -#include -#include - -using namespace std; -int dp[109][1009]; -int n; -int mi[109]; -struct nod{ - int b,p; -} re[109][109]; -int main() -{ - #ifndef ONLINE_JUDGE - freopen("in.txt","r",stdin); - #endif - int cas,maxb; - scanf("%d",&cas); - while(cas--) - { - int a,b;maxb = 0; - scanf("%d",&n); - memset(dp,0x3f,sizeof(dp)); - for(int i=1;i<=n;i++) - { - scanf("%d",&mi[i]); - for(int j=1;j<=mi[i];j++) - { - scanf("%d%d",&a,&b); - if(maxb -#include -using namespace std; -class device{ - public: - int b,p; -}dp[150]; -int t,n; -int main(){ - scanf("%d%d",&t,&n); - for(int it=1;it<=t;it++){ - for(int d,i=1;i<=n;i++){ - scanf("%d",&d); - double tmpl,tmpn; - double ans=0; - for(int j=1;j<=d;j++){ - int mb,mp; - scanf("%d%d",&mb,&mp); - tmpn=mb/mp; - if(tmpn>=ans){ - ans=tmpn; - dp[i].b=mb; - dp[i].p=mp; - } - } - dp[i].p+=dp[i-1].p; - } - int anss=0x7f; - for(int i=1;i<=n;i++) anss=min(anss,dp[i].b); - double _a=(double)anss/(double)(dp[n].p); - printf("%.3f\n",_a); - } - return 0; -} \ No newline at end of file diff --git a/example/1029 False coin/16712515_WA.cc b/example/1029 False coin/16712515_WA.cc deleted file mode 100644 index 7bde6f1..0000000 --- a/example/1029 False coin/16712515_WA.cc +++ /dev/null @@ -1,64 +0,0 @@ -#include -#include -#include -using namespace std; -const int maxn = 1000 + 50; -int left[maxn], right[maxn], mark[maxn]; -enum state{eq, neq}; -class flag { -public: - bool f1,f2; -}flag[maxn]; -class balance { -public: - int l[maxn], r[maxn], len; - state st; -}_k[maxn]; -bool cmp(balance A, balance B) { - return A.st < B.st; -} -void _swap(int* a, int* b) { - int* e; - e = a; - a = b; - b = e; -} -int n, k; -int main() { -#ifdef local - freopen("1029.in", "r", stdin); -#endif - scanf("%d%d", &n, &k); - int cnt = 0; - for(int q = 1; q <= k; q++) { - int l; - scanf("%d", &l); - _k[q].len = l; - for(int i = 1; i <= l; i++) scanf("%d", &_k[q].l[i]); - for(int i = 1; i <= l; i++) scanf("%d", &_k[q].r[i]); - char d; - cin >> d; - if(d == '=') {cnt++; _k[q].st = eq;} - else {_k[q].st = neq; _swap(_k[q].l, _k[q].r);} - } - sort(_k + 1, _k + k + 1, cmp); - for(int q = 1; q <= cnt; q++) { - for(int i = 1; i <= _k[q].len; i++) flag[_k[q].l[i]].f1 = flag[_k[q].l[i]].f2 = true; - for(int i = 1; i <= _k[q].len; i++) flag[_k[q].r[i]].f1 = flag[_k[q].r[i]].f2 = true; - } - for(int q = cnt + 1; q <= k; q++) { - for(int i = 1; i <= _k[q].len; i++) flag[_k[q].l[i]].f1 = true; - for(int i = 1; i <= _k[q].len; i++) flag[_k[q].r[i]].f2 = true; - } - int acnt = 0, ans; - for(int i = 1; i <= n; i++) { - if(flag[i].f1 && flag[i].f2) continue; - else { - acnt++; - ans = i; - } - } - if(acnt == 1) printf("%d", ans); - else printf("0"); - return 0; -} diff --git a/example/1029 False coin/16712627_CE.cc b/example/1029 False coin/16712627_CE.cc deleted file mode 100644 index ef5f5da..0000000 --- a/example/1029 False coin/16712627_CE.cc +++ /dev/null @@ -1,63 +0,0 @@ -#include -#define MAXN 1001 -using namespace std; -struct pp -{ - int w,s[MAXN]; -}h[101],temp; -int N,K,m,x,i; -bool f[MAXN]; -char c; -int GetAnswer() -{ - int ans=0,i,type,k,left[MAXN],right[MAXN]; - memset(left,0,sizeof(left)); - memset(right,0,sizeof(right)); - for (k=1;k<=m;k++) - { - for (i=1;i<=h[k].w/2;i++) left[h[k].s[i]]++; - for (i=h[k].w/2+1;i<=h[k].w;i++) right[h[k].s[i]]++; - } - for (i=1;i<=N;i++) - if (left[i]==m && !f[i]) - { - if (!ans) ans=i; - else return 0; - } - for (i=1;i<=N;i++) - if (right[i]==m && !f[i]) - { - if (!ans || ans==i) ans=i; - else return 0; - } - return ans; -} -int main() -{ - scanf("%d%d",&N,&K); - memset(f,false,sizeof(f)); - m=0; - while (K--) - { - scanf("%d",&temp.w); - temp.w=temp.w*2; - for (i=1;i<=temp.w;i++) scanf("%d",&temp.s[i]); - getchar(); c=getchar(); - if (c=='=') - { - for (i=1;i<=temp.w;i++) - f[temp.s[i]]=true; - }else - { - m++; - h[m]=temp; - if (c=='>') - { - for (i=1;i<=temp.w/2;i++) h[m].s[i+temp.w/2]=temp.s[i]; - for (i=temp.w/2+1;i<=temp.w;i++) h[m].s[i-temp.w/2]=temp.s[i]; - } - } - } - printf("%d\n",GetAnswer()); - return 0; -} diff --git a/example/1029 False coin/16712631_CE.cc b/example/1029 False coin/16712631_CE.cc deleted file mode 100644 index 36e795b..0000000 --- a/example/1029 False coin/16712631_CE.cc +++ /dev/null @@ -1,65 +0,0 @@ -#include -#include -#define MAXN 1001 -using namespace std; -struct pp -{ - int w,s[MAXN]; -}h[101],temp; -int N,K,m,x,i; -bool f[MAXN]; -char c; -int GetAnswer() -{ - int ans=0,i,type,k,left[MAXN],right[MAXN]; - memset(left,0,sizeof(left)); - memset(right,0,sizeof(right)); - for (k=1;k<=m;k++) - { - for (i=1;i<=h[k].w/2;i++) left[h[k].s[i]]++; - for (i=h[k].w/2+1;i<=h[k].w;i++) right[h[k].s[i]]++; - } - for (i=1;i<=N;i++) - if (left[i]==m && !f[i]) - { - if (!ans) ans=i; - else return 0; - } - for (i=1;i<=N;i++) - if (right[i]==m && !f[i]) - { - if (!ans || ans==i) ans=i; - else return 0; - } - return ans; -} -int main() -{ - scanf("%d%d",&N,&K); - memset(f,false,sizeof(f)); - m=0; - while (K--) - { - scanf("%d",&temp.w); - temp.w=temp.w*2; - for (i=1;i<=temp.w;i++) scanf("%d",&temp.s[i]); - getchar(); c=getchar(); - if (c=='=') - { - for (i=1;i<=temp.w;i++) - f[temp.s[i]]=true; - }else - { - m++; - h[m]=temp; - if (c=='>') - { - for (i=1;i<=temp.w/2;i++) h[m].s[i+temp.w/2]=temp.s[i]; - for (i=temp.w/2+1;i<=temp.w;i++) h[m].s[i-temp.w/2]=temp.s[i]; - } - } - } - printf("%d\n",GetAnswer()); - return 0; -} - diff --git a/example/1029 False coin/16712632_AC_0MS_1036K.cc b/example/1029 False coin/16712632_AC_0MS_1036K.cc deleted file mode 100644 index 9d920f8..0000000 --- a/example/1029 False coin/16712632_AC_0MS_1036K.cc +++ /dev/null @@ -1,66 +0,0 @@ -#include -#include -#include -#define MAXN 1001 -using namespace std; -struct pp -{ - int w,s[MAXN]; -}h[101],temp; -int N,K,m,x,i; -bool f[MAXN]; -char c; -int GetAnswer() -{ - int ans=0,i,type,k,left[MAXN],right[MAXN]; - memset(left,0,sizeof(left)); - memset(right,0,sizeof(right)); - for (k=1;k<=m;k++) - { - for (i=1;i<=h[k].w/2;i++) left[h[k].s[i]]++; - for (i=h[k].w/2+1;i<=h[k].w;i++) right[h[k].s[i]]++; - } - for (i=1;i<=N;i++) - if (left[i]==m && !f[i]) - { - if (!ans) ans=i; - else return 0; - } - for (i=1;i<=N;i++) - if (right[i]==m && !f[i]) - { - if (!ans || ans==i) ans=i; - else return 0; - } - return ans; -} -int main() -{ - scanf("%d%d",&N,&K); - memset(f,false,sizeof(f)); - m=0; - while (K--) - { - scanf("%d",&temp.w); - temp.w=temp.w*2; - for (i=1;i<=temp.w;i++) scanf("%d",&temp.s[i]); - getchar(); c=getchar(); - if (c=='=') - { - for (i=1;i<=temp.w;i++) - f[temp.s[i]]=true; - }else - { - m++; - h[m]=temp; - if (c=='>') - { - for (i=1;i<=temp.w/2;i++) h[m].s[i+temp.w/2]=temp.s[i]; - for (i=temp.w/2+1;i<=temp.w;i++) h[m].s[i-temp.w/2]=temp.s[i]; - } - } - } - printf("%d\n",GetAnswer()); - return 0; -} - diff --git a/pkuchive.py b/pkuchive/__init__.py similarity index 100% rename from pkuchive.py rename to pkuchive/__init__.py diff --git a/archive_map.arc b/pkuchive/archive_map.arc similarity index 100% rename from archive_map.arc rename to pkuchive/archive_map.arc diff --git a/setup.cfg b/setup.cfg new file mode 100644 index 0000000..224a779 --- /dev/null +++ b/setup.cfg @@ -0,0 +1,2 @@ +[metadata] +description-file = README.md \ No newline at end of file diff --git a/setup.py b/setup.py new file mode 100644 index 0000000..6beb7c7 --- /dev/null +++ b/setup.py @@ -0,0 +1,13 @@ +from distutils.core import setup +setup( + name = 'pkuchive', + packages = ['pkuchive'], # this must be the same as the name above + version = '1.0.1', + description = 'A tool for OIer to tag the archive folder provided by PKU openjudge (POJ) archive service.', + author = 'Kvar_ispw17', + author_email = 'enkerewpo@gmail.com', + url = 'https://github.com/enkerewpo/pkuchive', # use the URL to the github repo + download_url = 'https://github.com/enkerewpo/pkuchive/releases/download/1.0.1/pkuchive_release_1.0.1_20170706.tar.gz', # I'll explain this in a second + keywords = ['acm-icpc','noip','noi','openjudge '], # arbitrary keywords + classifiers = [], +) \ No newline at end of file